build(deps-dev): bump typescript from 5.9.3 to 7.0.2 in /web - #17
build(deps-dev): bump typescript from 5.9.3 to 7.0.2 in /web#17dependabot[bot] wants to merge 16 commits into
Conversation
… block, 13 language packs
…tstrap actually install deps - web/tsconfig.json excludes test files; new tsconfig.test.json typechecks them - HITLPopup.test.tsx: type mocks against the real PendingResponse<T>; drop an invented ShellAsk.reason field the server never sends - Makefile: web-deps target with npm ci -> npm install fallback for the stale lockfile; bootstrap no longer short-circuits on a stale ui/assets directory - cmd/slmcode/ui is now build output only (.gitkeep tracked); the placeholder page moved into Go so building the UI cannot dirty a tracked file - release workflow verifies a real Studio bundle is embedded, strips sourcemaps, installs golangci-lint, and validates the tag against version.go - install scripts: real checksum verification on Windows, no sudo for --user installs, loud warning when SHA256SUMS is unavailable - slmcode update: fix the Windows asset name, downgrade guard, --user/--system - RELEASE.md, changelog breaking-changes table, docs
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
…gs (config was already v2, tool was v1)�[0m �[38;5;243m 2�[0m �[38;5;243m 3�[0m �[38;5;249m`.golangci.yml` is v2-format but the installed golangci-lint binary was�[0m �[38;5;243m 4�[0m �[38;5;249mv1.64, so `make check` silently never ran the real lint gate. Upgrading to�[0m �[38;5;243m 5�[0m �[38;5;249mv2.13.1 surfaced 95 findings: 66 staticcheck QF1012 (WriteString(Sprintf)�[0m �[38;5;243m 6�[0m �[38;5;249m-> Fprintf, auto-fixed) and 28 gosec findings reviewed per-file and either�[0m �[38;5;243m 7�[0m �[38;5;249mfixed or annotated with a `//nolint:gosec // reason` matching this repo's�[0m �[38;5;243m 8�[0m �[38;5;249mexisting convention.�[0m
…e reachable through a symlink mismatch�[0m �[38;5;243m 2�[0m �[38;5;243m 3�[0m �[38;5;249ms.rootDir() returns the configured root as-is, but every path derived from�[0m �[38;5;243m 4�[0m �[38;5;249mworkspacePath()/resolveWorkspacePath() is passed through EvalSymlinks. On�[0m �[38;5;243m 5�[0m �[38;5;249mmacOS $TMPDIR (and thus every t.TempDir() workspace root) is itself a�[0m �[38;5;243m 6�[0m �[38;5;249msymlink into /private, so filepath.Rel(s.rootDir(), resolvedPath) never�[0m �[38;5;243m 7�[0m �[38;5;249mmatched — silently defeating every ".slmcode/ harness state" check built on�[0m �[38;5;243m 8�[0m �[38;5;249mtop of it:�[0m �[38;5;243m 9�[0m �[38;5;243m 10�[0m �[38;5;249m - GET /api/workspace/file?path=.slmcode/auth.json served the operator's�[0m �[38;5;243m 11�[0m �[38;5;249m provider API keys over HTTP.�[0m �[38;5;243m 12�[0m �[38;5;249m - GET /api/workspace/tree advertised auth.json in the listing.�[0m �[38;5;243m 13�[0m �[38;5;249m - The review queue could both display and apply a write into�[0m �[38;5;243m 14�[0m �[38;5;249m .slmcode/hooks.json (arbitrary-bash-on-next-run) via a crafted�[0m �[38;5;243m 15�[0m �[38;5;249m .slmcode/pending/*.patch.json entry.�[0m �[38;5;243m 16�[0m �[38;5;243m 17�[0m �[38;5;249mAdded Server.realRootDir(), which applies the same EvalSymlinks-or-fallback�[0m �[38;5;243m 18�[0m �[38;5;249mresolution as resolveWorkspacePath, and routed the three affected�[0m �[38;5;243m 19�[0m �[38;5;249mfilepath.Rel(s.rootDir(), ...) call sites through it.�[0m �[38;5;243m 20�[0m �[38;5;243m 21�[0m �[38;5;249mCaught by pkg/server/adversarial_secrets_test.go�[0m �[38;5;243m 22�[0m �[38;5;249m(TestAdvNoAPIKeyLeakOverHTTP, TestAdvPendingQueueCannotTargetHarnessState),�[0m �[38;5;243m 23�[0m �[38;5;249mwhich were failing on main before this change.�[0m
…ed both reviewers, doubling real LLM calls�[0m �[38;5;243m 2�[0m �[38;5;243m 3�[0m �[38;5;249mspeculate() cancels a losing slot's goroutine only before it reaches the�[0m �[38;5;243m 4�[0m �[38;5;249mexecutor; once dispatched, a fast/local executor runs it to completion�[0m �[38;5;243m 5�[0m �[38;5;249mregardless. reviewSlots() launched the primary reviewer and the strict�[0m �[38;5;243m 6�[0m �[38;5;249msecond reviewer fully concurrently with no head start, so against a fast�[0m �[38;5;243m 7�[0m �[38;5;249mexecutor both real LLM calls always completed before either could cancel�[0m �[38;5;243m 8�[0m �[38;5;249mthe other — the "1 race, up to 2 real requests" design always spent 2,�[0m �[38;5;243m 9�[0m �[38;5;249mnever 1.�[0m �[38;5;243m 10�[0m �[38;5;243m 11�[0m �[38;5;249mThis doubled review calls per correction round, which both blew the�[0m �[38;5;243m 12�[0m �[38;5;249mcall-budget escalation threshold (14 real calls against a budget of 10) and�[0m �[38;5;243m 13�[0m �[38;5;249mduplicated review-prompt entries per round, misaligning correction-content�[0m �[38;5;243m 14�[0m �[38;5;249mchecks that expect one review per CORRECTOR-PASS-N.�[0m �[38;5;243m 15�[0m �[38;5;243m 16�[0m �[38;5;249mAdded an optional per-slot Delay to SpecSlot, honored in speculate()'s�[0m �[38;5;243m 17�[0m �[38;5;249mdispatch loop: a delayed slot waits out the delay (or bails immediately if�[0m �[38;5;243m 18�[0m �[38;5;249mthe race is already won) before ever reaching the executor. reviewSlots()�[0m �[38;5;243m 19�[0m �[38;5;249mnow gives reviewer-strict a 20ms head start — well under real LLM latency,�[0m �[38;5;243m 20�[0m �[38;5;249mso production still races both reviewers as before, but long enough for a�[0m �[38;5;243m 21�[0m �[38;5;249mfast/local/test executor to let the primary win outright and skip the�[0m �[38;5;243m 22�[0m �[38;5;249msecond dispatch.�[0m �[38;5;243m 23�[0m �[38;5;243m 24�[0m �[38;5;249mCaught by pkg/loop/retry_ladder_test.go�[0m �[38;5;243m 25�[0m �[38;5;249m(TestCorrectionRoundsSeeThePreviousCorrection,�[0m �[38;5;243m 26�[0m �[38;5;249mTestCallBudgetExhaustionEscalatesWithAUsefulState).�[0m
…he CSS bundle and its own SSE marker�[0m
�[38;5;243m 2�[0m
�[38;5;243m 3�[0m �[38;5;249mdiscoverAssets() found the CSS <link> by taking a +-200-char window around�[0m
�[38;5;243m 4�[0m �[38;5;249mrel="stylesheet" and grabbing the first href="/assets/..." in it. On a real�[0m
�[38;5;243m 5�[0m �[38;5;249mVite build, the preceding <link rel="modulepreload" href="...js"> tags for�[0m
�[38;5;243m 6�[0m �[38;5;249mroute chunks sit inside that window and their href comes first in document�[0m
�[38;5;243m 7�[0m �[38;5;249morder, so the "CSS path" it returned was actually a JS chunk�[0m
�[38;5;243m 8�[0m �[38;5;249m(assets/react-*.js) whenever the head had two or more modulepreload tags�[0m
�[38;5;243m 9�[0m �[38;5;249mahead of the stylesheet link. Fixed to search only within the matched�[0m
�[38;5;243m 10�[0m �[38;5;249m<link ...> tag's own boundaries.�[0m
�[38;5;243m 11�[0m
�[38;5;243m 12�[0m �[38;5;249mSeparately, the JS-corpus marker list checked for the literal "/api/events"�[0m
�[38;5;243m 13�[0m �[38;5;249msubstring, but createEventSource() builds that URL as `${BASE}/events`�[0m
�[38;5;243m 14�[0m �[38;5;249m(BASE="/api"), so the two halves never appear contiguous in the bundle —�[0m
�[38;5;243m 15�[0m �[38;5;249mevery other marker in the list is a bare path for the same reason (client.ts's�[0m
�[38;5;243m 16�[0m �[38;5;249mrequest() prepends BASE separately). Changed the marker to "/events" to�[0m
�[38;5;243m 17�[0m �[38;5;249mmatch.�[0m
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.3 to 7.0.2. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](microsoft/TypeScript@v5.9.3...v7.0.2) --- updated-dependencies: - dependency-name: typescript dependency-version: 7.0.2 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
e9ffb94 to
d81ab53
Compare
a85446a to
1d710eb
Compare
…#22) * build(deps): React 19, Vite 8, Vitest 4, and the GitHub Actions majors Closes the dependabot backlog in one sweep rather than 17 sequential rebase-and-merge cycles: every one of those PRs touches package.json or package-lock.json, so each merge conflicts the next and the queue can only drain one CI round at a time. ── GitHub Actions (7 PRs) ──────────────────────────────────────────────────── checkout 4→7, setup-go 5→7, setup-node 4→7, setup-python 5→7, deploy-pages 4→5, upload-pages-artifact 3→5, action-gh-release 2→3. Mechanical; the v4/v5 majors were also emitting Node 20 deprecation warnings on every run. ── Web (7 of 10 PRs) ───────────────────────────────────────────────────────── react + react-dom 18.3.1→19.2.8, @types/react 19, @dnd-kit/sortable 8→10 (with core →6.3.0 for its peer), vite 5→8, @vitejs/plugin-react 4→6, vitest + @vitest/coverage-v8 2→4, globals 15→17, eslint-plugin-react-hooks 5→7, typescript-eslint →8.68.0. Three things had to change for these to work: • React 19 types. `useRef<T>(null)` now yields `RefObject<T | null>` rather than `RefObject<T>` — the honest type, since a ref genuinely is null until its element mounts. Fixed at the three declaration sites (useStickToBottom's return, Modal's initialFocusRef, HITLPopup's firstActionRef) rather than cast away at the ~10 use sites. • Vite 8 builds on rolldown, which accepts `manualChunks` only as a callback and fails the build outright on the object form. Same three vendor chunks (react / dnd / icons), matched on module id. • `__dirname` in the vite and vitest configs, which Vite 8's native config loader warns about. Now `import.meta.dirname`. ── The new React Compiler lint rules are OFF, deliberately ────────────────── eslint-plugin-react-hooks v7 enables a family of rules derived from the React Compiler. They flag 42 EXISTING patterns across Studio — not regressions, just constructs the compiler cannot prove safe to memoize, setState-inside-an-effect being most of them. They are off rather than warnings because a warning nobody can act on 42 times is noise that trains people to ignore the whole report. Adopting them is a real refactor of state flow across the app and deserves its own review, not a silent rewrite of every effect riding along in a version bump. rules-of-hooks and exhaustive-deps — the two that caught real shipped bugs — stay errors. The gate is not weakened by one rule: eslint still reports 0 errors and the same 50 pre-existing warnings it did before. ── Three PRs are NOT adoptable, and the blocker is upstream ───────────────── typescript 5.9.3 → 7.0.2 (#17) typescript-eslint caps TypeScript at <6.1.0 — including its own 8.68.1 alphas. Taking TS 7 means deleting TypeScript linting from the project. eslint 9.39.5 → 10.8.1 (#19) and @eslint/js → 10.0.1 (#11) eslint-plugin-jsx-a11y's newest release (6.10.2) peers eslint ^3..^9 only. No ESLint 10 support has shipped. Forcing either with --legacy-peer-deps produces a tree whose linting is silently broken, which is worse than staying on the current major. They stay open until the ecosystem catches up. Verified: tsc clean, eslint 0 errors, 79/79 vitest, vite build green, Go build + lint at the zero baseline + full suite clean, and Studio exercised in a browser under React 19 — SSE connected, all chunks and API calls 200, the composition preview and phase rail rendering correctly. * ci: run Node 22, which the new web toolchain requires Vitest 4 pulls a jsdom whose undici calls `webidl.util.markAsUncloneable`, added in Node 22.10. On CI's Node 20 that is a TypeError thrown while merely IMPORTING jsdom, so every test file failed to start — 9 unhandled errors and 'no tests' rather than a test failure. Two jobs disagreed about this and the disagreement hid it: Web Frontend Check only runs tsc and the build, so it passed; Lint & Test and Pre-commit run `make check`, which runs vitest, and both failed. A green check on the job named after the frontend was reporting on half of it. `engines: node >=22.10` in web/package.json makes the floor explicit, so a mismatch fails at install time with a readable message instead of at test time with a TypeError from inside a transitive dependency. Docs updated from the stale 'Node 18+' to match.
|
Blocked upstream — not mergeable today.
Taking TS 7 now would mean removing Leaving this open until typescript-eslint ships TS 7 support. Everything else from the dependabot backlog landed in #22. |
|
Dependabot can't resolve your JavaScript dependency files. Because of this, Dependabot cannot update this pull request. |
Bumps typescript from 5.9.3 to 7.0.2.
Release notes
Sourced from typescript's releases.
Commits
1e4744dMerge branch 'main' into ts7-releasea5a219cmicrosoft/typescript-go#4558ecfe30dUpdate status localization5de25b5Hide executable name in TypeScript statusd7ce74aShow bundled TypeScript version for packaged servers29be66aCorrect TS 7 release version to 7.0.2ed2bd1bMerge branch 'main' into ts7-release8873075Bump the github-actions group across 1 directory with 3 updates (microsoft/ty...9427131Set up stable / nightly extension split, other prep (microsoft/typescript-go#...d4eaca5microsoft/typescript-go#4549Maintainer changes
This version was pushed to npm by microsoft1es, a new releaser for typescript since your current version.